import axios from 'axios';
import {
  Toast,
  Indicator
} from 'mint-ui';
axios.defaults.timeout = 1800;
const urlMap = {
  'development': '/',
  'production': '/'
};
// eslint-disable-next-line no-process-env
const baseUrl = urlMap[process.env.NODE_ENV];
const ERR_OK = 0;
// 添加请求拦截器
axios.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么
    Indicator.open({
      'text': '加载中...',
      'spinnerType': 'fading-circle'
    });
    return config;
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  response => {
    // 对响应数据做点什么
    Indicator.close();
    return response;
  },
  error => {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

export function get(url) {
  return function (params = {}, query = '') {
    return new Promise((resolve, reject) => {
      query = query.toString().startsWith('/') ? query : query ? '/' + query : '';
      axios.get(baseUrl + url + query, {
        params
      }).then((res) => {
        const {
          errno,
          data
        } = res.data;
        if (errno === ERR_OK) resolve(data);
      }).catch((err) => {
        Toast({
          'message': err.message,
          'iconClass': 'icon icon-error',
          'duration': 4000,
          'position': 'middle'
        });
        reject(err);
      });
    });
  };
}
